﻿

/*===================================================================================
* 
*   Copyright (c) Userware/OpenSilver.net
*      
*   This file is part of the OpenSilver Runtime (https://opensilver.net), which is
*   licensed under the MIT license: https://opensource.org/licenses/MIT
*   
*   As stated in the MIT license, "the above copyright notice and this permission
*   notice shall be included in all copies or substantial portions of the Software."
*  
\*====================================================================================*/


// Source: https://github.com/Microsoft/UWPCommunityToolkit/tree/master/Microsoft.Toolkit.Uwp.UI.Controls/GridSplitter


// ******************************************************************
// Copyright (c) Microsoft. All rights reserved.
// This code is licensed under the MIT License (MIT).
// THE CODE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
// THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.
// ******************************************************************

#if MIGRATION
#else
#endif


#if MIGRATION
namespace System.Windows.Controls
#else
namespace Windows.UI.Xaml.Controls
#endif
{
    /// <summary>
    /// Represents the control that redistributes space between columns or rows of a Grid control.
    /// </summary>
    public partial class GridSplitter
    {
        /// <summary>
        /// Enum to indicate whether GridSplitter resizes Columns or Rows
        /// </summary>
        public enum GridResizeDirection
        {
            /// <summary>
            /// Determines whether to resize rows or columns based on its Alignment and
            /// width compared to height
            /// </summary>
            Auto,

            /// <summary>
            /// Resize columns when dragging Splitter.
            /// </summary>
            Columns,

            /// <summary>
            /// Resize rows when dragging Splitter.
            /// </summary>
            Rows
        }

        /// <summary>
        /// Enum to indicate what Columns or Rows the GridSplitter resizes
        /// </summary>
        public enum GridResizeBehavior
        {
            /// <summary>
            /// Determine which columns or rows to resize based on its Alignment.
            /// </summary>
            BasedOnAlignment,

            /// <summary>
            /// Resize the current and next Columns or Rows.
            /// </summary>
            CurrentAndNext,

            /// <summary>
            /// Resize the previous and current Columns or Rows.
            /// </summary>
            PreviousAndCurrent,

            /// <summary>
            /// Resize the previous and next Columns or Rows.
            /// </summary>
            PreviousAndNext
        }

        /// <summary>
        ///  Enum to indicate the supported gripper cursor types.
        /// </summary>
        public enum GripperCursorType
        {
            /// <summary>
            /// Change the cursor based on the splitter direction
            /// </summary>
            Default = -1,

            /// <summary>
            /// Standard Arrow cursor
            /// </summary>
            Arrow,

            /// <summary>
            /// Standard Cross cursor
            /// </summary>
            Cross,

            /// <summary>
            /// Standard Custom cursor
            /// </summary>
            Custom,

            /// <summary>
            /// Standard Hand cursor
            /// </summary>
            Hand,

            /// <summary>
            /// Standard Help cursor
            /// </summary>
            Help,

            /// <summary>
            /// Standard IBeam cursor
            /// </summary>
            IBeam,

            /// <summary>
            /// Standard SizeAll cursor
            /// </summary>
            SizeAll,

            /// <summary>
            /// Standard SizeNortheastSouthwest cursor
            /// </summary>
            SizeNortheastSouthwest,

            /// <summary>
            /// Standard SizeNorthSouth cursor
            /// </summary>
            SizeNorthSouth,

            /// <summary>
            /// Standard SizeNorthwestSoutheast cursor
            /// </summary>
            SizeNorthwestSoutheast,

            /// <summary>
            /// Standard SizeWestEast cursor
            /// </summary>
            SizeWestEast,

            /// <summary>
            /// Standard UniversalNo cursor
            /// </summary>
            UniversalNo,

            /// <summary>
            /// Standard UpArrow cursor
            /// </summary>
            UpArrow,

            /// <summary>
            /// Standard Wait cursor
            /// </summary>
            Wait
        }

        /// <summary>
        ///  Enum to indicate the behavior of window cursor on grid splitter hover
        /// </summary>
        public enum SplitterCursorBehavior
        {
            /// <summary>
            /// Update window cursor on Grid Splitter hover
            /// </summary>
            ChangeOnSplitterHover,

            /// <summary>
            /// Update window cursor on Grid Splitter Gripper hover
            /// </summary>
            ChangeOnGripperHover
        }
    }
}
